// 对axios进行二次封装（实例化axios对象,设置请求拦截器，设置响应拦截器）

import axios from 'axios'

// 实例化axios对象
var service = axios.create({
    baseURL: process.env.REACT_APP_BASE_URL,  //基准路径
    timeout: 10 * 1000,  //超时时间   
})

// 设置请求拦截器
service.interceptors.request.use(
    (config) => {
        // 一般情况下.在这里设置请求头(请求头应该是服务端必须要求携带的)
        config.headers.Authorization = "Bearer" + " " + localStorage.getItem('token');

        return config;
    },

    (err) => {
        return Promise.reject(err)
    },
)


//设置响应拦截器
service.interceptors.response.use(
    (res) => {
        return res;
    },

    (err) => {
        // 一般在这里处理服务端返回的错误码
        if (err.response.status == 401) {
            alert('身份验证,登录过期,请重新登录');
            // 跳转到登录页
            // 删除过期的token
        } 
        else if (err.response.status == 404) {
            alert("访问路径有误!")
        }
        else if ( err.response.status == 500 ) {
            alert("服务器内部错误!");
        }

        return Promise.reject(err)
    },
)

// 必须得导出
export default service;